package com.tao.innerclass;

public class StaticInnerClass01 {
    public static void main(String[] args) {
        Outer05 outer05 = new Outer05();
        outer05.m1();

        //外部其他类访问静态内部类的方法有两个
        //第一种
        Outer05.Inner inner = new Outer05.Inner();//这里因为内部类是静态的，所以可以用外部类类名直接调用
        inner.show();

        //第二种方法
        //在外部类中，编写一个方法，可以返回 Inner01 对象
        Outer05.Inner inner1 = Outer05.getInner();
        inner1.show();
    }
}

class Outer05{
    private static int n1 = 10;
    public static class Inner{//可以添加任意访问修饰符(public、protected 、默认、private),因为它的地位就是一个成员
        public void show(){
            System.out.println(n1);//可以直接访问外部类的所有静态成员，包含私有的，但不能直接访问非静态成员
            //如果内部类和外部类成员重名，默认遵循就近原则，和前两种内部类规则一样
        }
    }

    //创建对象，在访问
    public void m1(){
        Inner inner = new Inner();
        inner.show();
    }

    public static Inner getInner() {
        return new Inner();
    }
}